草庐IT

c++ - Lua C++ 表迭代

全部标签

C++迭代器停留在第一个值

我正在学习C++,但遇到了一些我无法解释的行为。下面的两段代码提供了不同的结果,但我希望它们是等价的:success=true;vector::const_iteratori;for(i=instructions.begin();i!=instructions.end();++i){boolup=update(*i);success=success&&up;}和success=true;vector::const_iteratori;for(i=instructions.begin();i!=instructions.end();++i){success=success&&update

c++ - 将 vector 地址分配给迭代器

我希望vector迭代器指向一个vector元素。我有#include#includeintmain(){std::vectorvec={1,2,3,4,5};std::vector::iteratorit;//want"it"topointtothe"3"element,sosomethinglike//it=&prices[2];//it=&prices.at(2);}但是这些尝试都不起作用。我想我需要一些返回迭代器的vector函数,而不是地址(?) 最佳答案 neitheroftheseattemptswork确实,您不能从

c++ - 我可以获得指向当前迭代器值的指针吗

在我的类(class)中,我有两个私有(private)成员:std::listobjects;MyObject*selecteObj;当事件发生时,我想遍历列表并运行某种测试,该测试只会对列表中的一项产生true。我想保存指向该项目的指针以供在其他地方使用。std::list::iteratori;for(i=objects.begin();i!=objects.end();++i){if(i->test())selectedObj=i;}在其他地方用另一种方法if(selectedObj!=null)tmpObj->doSomething();但是这不起作用,因为i不是指针,它是一

c++ - 如何识别 C++ while 循环中的最后一次迭代?

我怎样才能让最后一个玩家名字没有,所以它是:Playeronline:Jim,John,Tony不是Playeronline:Jim,John,Tony,我的代码是:boolCommands::whoIsOnline(Creature*c,conststd::string&cmd,conststd::string¶m){Player*player=dynamic_cast(c);if(player){player->sendTextMessage(MSG_STATUS_CONSOLE_BLUE,"Playersonline:");AutoList::listiteratorit

c++ - 使用迭代器遍历 QMap 并删除/添加项目是否正确?

是否可以在迭代器的帮助下按顺序遍历QMap,并执行这样的操作:删除一些项目并添加新项目?例如:for(QMap::iteratorit=map.begin();it!=map.end();++it){if(it->value==something){map.erase(it);map.insert(it->key+10,it->value);}}看来,没有什么会做错的,我要求确定。(我没有足够的时间检查它)。UPD将用QMap::unite()解决:for(QMap::iteratorit=map.begin();it!=map.end();++it){if(it->value==so

c++ - 在 for 循环中,就迭代总数而言,循环控制变量的前/后递增之间是否存在差异?

当我使用counter++编译并运行下面的代码时或++counter代替x,输出是相同的;在这两种情况下,数字1-10:for(intcounter=1;counter本来我以为++counter将递增1,然后在计算循环头中的bool表达式之前返回新值。即以counter=1开头时并使用++counter,counter在bool表达式中的值为2。这似乎不是这种情况,因为两个输出是相同的而不是++counter。版本少了一次迭代,正如我预期的那样。四处阅读,似乎++counter和counter++增量counter分别在循环体的开始或结束处增加1。在哪种情况下,至少在概念上,这不是一

C++ - 迭代从 find_if 返回的 std::vector<>

我正在学习C++,所以我觉得这应该是一个非常简单的答案-但我似乎找不到它。所以,如果它是幼稚的,我提前道歉。我有一个std::vector的值,我试图找到奇数值的索引。我正在遵循here中的代码:(在下面重复)://find_ifexample#include//std::cout#include//std::find_if#include//std::vectorboolIsOdd(inti){return((i%2)==1);}intmain(){std::vectormyvector;myvector.push_back(10);myvector.push_back(25);my

c++ - 如何在类中实现标准迭代器

我有一些类通常使用标准容器作为基础字段。比如我有一个类templateclassVec_3D{public:/*...*/std::arrayvec;/*...*/};只有一个变量vec其余的只是我在使用vector时需要的功能。我希望能够使用基于范围的for循环,例如Vec_3Dvec;for(doubleval:vec){/*...*/}这显然应该遍历std::array.如何在我的类中实现迭代器,依次调用std::array的迭代器?我从thisquestion开始并尝试将我的类中的迭代器定义为typedefstd::iteratoriterator;typedefstd::it

c++ - 列表迭代器不可递增

我有一个使用visualstudio2003构建的旧项目,最近我用vs2005重新编译了它。但是,在运行时,我收到以下错误:列表迭代器不可递增我跟踪程序到这个函数:voidInputQueue::update(){list::iteratoriter;list::iteratoriterTemp;for(iter=begin();iter!=end();iter++){if(iter->arrivalTime==0){ReadyQueue::getInstance()->add(*iter);iterTemp=iter;iter++;erase(iterTemp);}}}我不是C++专

C++迭代器问题

我有以下成员(member)数据vector*>activeChildren;我想在我的析构函数中清理这些指针StateContainer::~StateContainer(){vector*>::iteratorit=activeChildren.begin();while(it!=activeChildren.end()){State*ptr=*it;it=activeChildren.erase(it);deleteptr;}}我在Ubuntu上从g++4.3.2得到以下错误:./fsm2/StateContainer.cpp:Indestructor‘virtualervan: